﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.AbmCliente;

namespace GestorDeFlotasDesktop.Facturar
{
    public partial class Facturar : Form
    {
        public Facturar()
        {
            InitializeComponent();
        }

        private void Facturar_Load(object sender, EventArgs e)
        {
            labelClienteCO.Visible = false;
            buttonFacturar.Visible = false;
        }

        public int id_cliente;

        #region ningunNull
        public int ningunNull()
        {
            int resultado = 1;
            if (textBoxCliente.Text == string.Empty)
            {
                labelClienteCO.Visible = true;
                resultado = 0;
            }

            if (dateTimePickerInicio.Value.Date > dateTimePickerFin.Value.Date)
            {
                MessageBox.Show("La fecha inicial debe ser anterior a la fecha final", "Rango de Fecha erroneo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                resultado = 0;
            }

            return resultado;
        }
        #endregion
        
        private void buttonOk_Click(object sender, EventArgs e)
        {
            labelClienteCO.Visible = false;
            buttonFacturar.Visible = false;

            if (ningunNull() == 1)
            {
                sqlManager.Conectar();
                dGridResultado.DataSource = sqlManager.ObtenerViajes(dateTimePickerInicio.Text, dateTimePickerFin.Text, id_cliente);
                textBoxImporteTotal.Text = Convert.ToString(sqlManager.ObtenerImporteTotal(dateTimePickerInicio.Text, dateTimePickerFin.Text, id_cliente));
                //textBoxImporteTotal.Text = "100";
                sqlManager.Desconectar();

                if (dGridResultado.RowCount > 0 && textBoxImporteTotal.Text != "-1")
                {
                    buttonFacturar.Visible = true;
                    dGridResultado.Visible = true;
                }
            }
        }

        private void buttonLimpiar_Click(object sender, EventArgs e)
        {
            textBoxCliente.Text = string.Empty;
            textBoxImporteTotal.Text = string.Empty;
            dGridResultado.Visible = false;
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonFacturar_Click(object sender, EventArgs e)
        {
            sqlManager.Conectar();
            int resultado = sqlManager.FacturarCliente(dateTimePickerInicio.Text, dateTimePickerFin.Text, id_cliente, textBoxImporteTotal.Text);
            sqlManager.Desconectar();

            if (resultado != 1)
            {
                MessageBox.Show("No se pudo facturar", "Log", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                sqlManager.Conectar();
                sqlManager.FacturaracionItem(dateTimePickerInicio.Text, dateTimePickerFin.Text, id_cliente);
                sqlManager.Desconectar();
                MessageBox.Show("Se facturo correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
        }

        private void buttonSeleccionarCliente_Click(object sender, EventArgs e)
        {
            ListadoCliente formListadoCliente = new ListadoCliente(); //Busca Chofer
            formListadoCliente.ShowDialog(this);
            if (formListadoCliente.datoCliente.id_cliente != 0)   //No se cancelo la busqueda
            {
                textBoxCliente.Text = formListadoCliente.datoCliente.nombre;
                id_cliente = formListadoCliente.datoCliente.id_cliente;
                //Muestra el nombre pero cuando se manda a guardar se manda la id
            }
        }

        private void dateTimePickerInicio_ValueChanged(object sender, EventArgs e)
        {
            buttonFacturar.Visible = false;
        }

        private void dateTimePickerFin_ValueChanged(object sender, EventArgs e)
        {
            buttonFacturar.Visible = false;
        }

        private void textBoxCliente_TextChanged(object sender, EventArgs e)
        {
            buttonFacturar.Visible = false;
        }

      
    }
}
